#include "spi.h"

void SPI5_Init(void) {
	LL_GPIO_InitTypeDef SPI_GPIO_InitStruct;
	
	LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOF);
	
	SPI_GPIO_InitStruct.Alternate = LL_GPIO_AF_5;
	SPI_GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
	SPI_GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
	SPI_GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
	SPI_GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH;
	//SCK
	SPI_GPIO_InitStruct.Pin = LL_GPIO_PIN_7;
	LL_GPIO_Init(GPIOF, &SPI_GPIO_InitStruct);
	//MISO
	SPI_GPIO_InitStruct.Pin = LL_GPIO_PIN_8;
	LL_GPIO_Init(GPIOF, &SPI_GPIO_InitStruct);
	//MOSI
	SPI_GPIO_InitStruct.Pin = LL_GPIO_PIN_9;
	LL_GPIO_Init(GPIOF, &SPI_GPIO_InitStruct);
	
	LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI5);
	/* Configure SPI5 communication */
	LL_SPI_SetBaudRatePrescaler(SPI5, LL_SPI_BAUDRATEPRESCALER_DIV2);
	LL_SPI_SetTransferDirection(SPI5,LL_SPI_FULL_DUPLEX);
	LL_SPI_SetClockPhase(SPI5, LL_SPI_PHASE_2EDGE);
	LL_SPI_SetClockPolarity(SPI5, LL_SPI_POLARITY_HIGH);
	LL_SPI_SetTransferBitOrder(SPI5, LL_SPI_MSB_FIRST);
	LL_SPI_SetDataWidth(SPI5, LL_SPI_DATAWIDTH_8BIT);
	LL_SPI_SetNSSMode(SPI5, LL_SPI_NSS_SOFT);
	LL_SPI_SetMode(SPI5, LL_SPI_MODE_MASTER);
	LL_SPI_Enable(SPI5);
}
